#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>

#define BUFFER_SIZE 128

void getPath(char *pathname)
{
    DIR *dir = opendir(pathname);
    if (dir == NULL)
    {
        perror("open dir error:");
        exit(-1);
    }
    while (1)
    {
        struct dirent *content = readdir(dir);
        if (content == NULL)
        {
            break;
        }
        if (strcmp(content->d_name, ".") != 0 && strcmp(content->d_name, "..") != 0)
        {
            if (content->d_type == 4)
            {
                char tempName[BUFFER_SIZE] = {0};
                strcpy(tempName, pathname);
                strcat(tempName, "/");
                strcat(tempName, content->d_name);

                // char *tempName = strcat(strcat(pathname, "/"), content->d_name);
                // printf("%s\n", tempName);
                getPath(tempName);
            }
            if (strstr(content->d_name, ".mp3"))
            {
                printf("%s\n", content->d_name);
            }
        }
    }
}

int main()
{

    char pathname[BUFFER_SIZE] = {0};
    // 获取当前进程的工作目录
    getcwd(pathname, BUFFER_SIZE);
    // printf("pathname = %s\n", pathname);
    getPath(pathname);

    // 打开文件夹
    // DIR *dir = opendir(pathname);
    // if (dir == NULL)
    // {
    //     perror("open dir error:");
    //     exit(-1);
    // }

    // // 读取文件夹
    // while (1)
    // {
    //     struct dirent *content = readdir(dir);
    //     if (content == NULL)
    //     {
    //         break;
    //     }
    //     printf("name:%s,type:%d\n", content->d_name, content->d_type);
    // }

    // // 关闭文件夹
    // closedir(dir);

    return 0;
}
